之前我們是直接在index.js
把資料吐進.ejs
模板中;今天來試試如果是json資料怎麼做。
如果我們有大量的商品資訊,每樣商品都有品名、價位、描述等,這時我們用json來儲存和更新是比較容易的。
為了等一下練習把json載入模板,我們先在專案最外層自己創一個junkfood.json
,放隨意資料:(或你也可以直接複製這裡)
junkfood.json
{
"ProductCategory": "Junk Food",
"Products": [
{
"ProductId": "101",
"ProductName": "French Fries",
"Price": "39"
},
{
"ProductId": "102",
"ProductName": "Hamburger",
"Price": "129"
},
{
"ProductId": "103",
"ProductName": "Ice Cream",
"Price": "19"
},
{
"ProductId": "104",
"ProductName": "Cola",
"Price": "12"
},
{
"ProductId": "105",
"ProductName": "Potato Cakes",
"Price": "49"
}
]
}
把junkfood.json
放在最外層:
- bin/
----- www
- node_modules/
- public/
-------- images
-------- javascripts
-------- stylesheets
- routes/
-------- index.js
-------- users.js
- views/
------- error.ejs
------- index.ejs
- app.js
- package.json
- package-lock.json
+ - junkfood.json
localhost:3000
,也就是index.ejs
;因為控制模板的是同名的js檔,因此首先我們要在index.js
把資料集引入:
index.js
var express = require('express');
var router = express.Router();
var request = require('request');
+ var junkFood = require('../junkfood.json'); // "../"的意思是回到上一層資料夾
router.get('/', function(req, res, next) {
res.render('index', {
title: 'MyAppName'
});
});
module.exports = router;
index.js
var express = require('express');
var router = express.Router();
var request = require('request');
var junkFood = require('../junkfood.json');
router.get('/', function(req, res, next) {
res.render('index', {
title: 'MyAppName',
+ junkFood: junkFood
});
});
module.exports = router;
index.ejs
來,.ejs.
的迴圈有些小地方要注意:Products
array中的各個項目列出(有注意到剛剛的junkFood.json裡,Products是一個大陣列吧?):
index.ejs
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<h3><%= junkFood.ProductCategory %></h3>
<ul>
<% junkFood.Products.forEach(function(item) { %>
<li>#<%= item.ProductId %>: <%= item.ProductName %> | <%= item.Price %></li>
<% }); %>
</ul>
</body>
</html>
接著運行node www
,你會看到資料被呈現在localhost:3000
上了。
連續幾天都非常的easy,明天以後我們終於要進入Python的世界。
遇到幾個問題,怕之後有人有遇到,特別來留言
問題一 : Unexpected token / in JSON at position 0
解:json裡面不要有註解(// junkfood.json刪掉)
問題二 : SyntaxError: Unexpected token )
解:輸出地方留著'=',其他運算迴圈的'='刪除
原本:
<%= junkFood.Products.forEach(function(item) { %>
#<%= item.ProductId %>:
<%= item.ProductName %> |
<%= item.Price %>
<%= }); %>
改成:
<% junkFood.Products.forEach(function(item) { %>
#<%= item.ProductId %>:
<%= item.ProductName %> |
<%= item.Price %>
<% }); %>
感謝解答
另外還有forEach
f不能大寫
新手以上的問題都遇到了~^___^~
沒看留言 結果花了一些時間才發現哪錯了